package org.example.mapper;

import org.apache.ibatis.annotations.Param;
import org.example.entity.Student;

import java.util.List;

/**
 *
 */
public interface StudentMapper {
    //根据id查询单条记录
    Student getById(String id);

     List<Student> getAll();

     void insert(Student s);
     void update(Student s);
     void delete(Student s);

     List<Student> getByName(String name);

     /*
        为sql传递参数
            传递N个参数
                如果是来自于一张表，那么通过实体类对象，直接封装即可
                例如：传递name和age，将name和age封装到Student s中，传递s即可

                如果是来自于两张表
                student  classes

                解决方案1：
                class StudentAndClasses{
                    参数1
                    参数2
                }

                解决方案2：
                    Map集合
                        put 参数1 参数2


                以上解决方案1和方案2，虽然都可行
                但是也都是同一个内核，就是将N多个参数，还是变成了一个参数进行传递

            MyBatis对于sql N多个参数的传递问题，是有解决方案的


     */

     List<Student> getByNameAndAge(@Param("name") String name,@Param("age") int age);

     void deleteByIds(List<String> ids);

     void deleteByIds2(String[] ids);

     List<Student> getStudentByCondition(Student s);

     void update2(Student s);

}
